package com.hlyj.http.base.tool.lib_hlyj_base.net;

import java.security.SecureRandom;
import java.security.cert.CertificateException;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

public class SSLSocketClient{
     //获取这个SSLSocketFactory  
             public static SSLSocketFactory getSSLSocketFactory() {
                 try
                 {
                         SSLContext sslContext = SSLContext.getInstance("SSL");
                         sslContext.init(null, getTrustManager(), new SecureRandom());
                         return sslContext.getSocketFactory();
                     }
                 catch (Exception e)
                 {
                         throw new RuntimeException(e);
                  }
             }




    //获取TrustManager
             private static TrustManager[] getTrustManager() {
                  TrustManager[] trustManager = new TrustManager[]{
                         new X509TrustManager() {


                             @Override
                             public void checkServerTrusted(X509Certificate[] chain, String authType) throws
                                     CertificateException {
                             }

                             @Override
                             public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {

                             }

                             @Override
                             public X509Certificate[] getAcceptedIssuers() {
                                 return null;    // 返回null
                             }
                         }
                 };

                 return trustManager;
             }

             //获取HostnameVerifier  
             public static HostnameVerifier getHostnameVerifier() {
                 HostnameVerifier hostnameVerifier = new HostnameVerifier()
                 {
                         @Override
                         public boolean verify(String s, SSLSession sslSession)
                         {
                                 return true;
                             }
                     };
                 return hostnameVerifier;
             }
 }
